import java.util.LinkedList;
import java.util.Queue;

/*
 * @author zzr
 * @date: 2025/10/17  20:54
 * @description: 判断一棵树是否是完全二叉树
 *
 */
public class Demo27 {
    public boolean isCompleteTree(Demo26.TreeNode root) {
        if (root == null) {
            return true;
        }

        Queue<Demo26.TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            Demo26.TreeNode cur = queue.poll();
            if (cur != null) {
                if (cur.left != null) {
                    queue.offer(cur.left);
                }
                if (cur.right != null) {
                    queue.offer(cur.right);
                }
            } else {
                // 遇到 null
                break;
            }
        }

        //  注意：null 添加到队列中，也是拥有一个大小空间的，属于一个元素
        // 此时的 queue 是非空的~
        while (!queue.isEmpty()) {
            Demo26.TreeNode cur = queue.poll();
            if (cur != null) {
                return false;
            }
        }
        return true;
    }
}
